

package com.apiserver.data.service;


import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

/**
 * @Author feizhou
 * @Description  基本方法封装
 * @Date 下午 10:18 2019/10/10 0010
 * @Param 
 * @return 
 **/

public interface BaseService<M>    {

	/**
	 * @Author feizhou
	 * @Description 主键查询
	 * @Date 下午 10:35 2019/10/10 0010
	 * @Param [id]
	 * @return M
	 **/
	
	M selectById(Object id) ;
	/**
	 * @Author feizhou
	 * @Description 返回查询列表
	 * @Date 下午 10:34 2019/10/10 0010
	 * @Param [m]
	 * @return java.util.List<M>
	 **/
	
	List<M> selectAll(M m);


	/**
	 * @Author feizhou
	 * @Description 返回排序列表
	 * @Date 下午 10:38 2019/10/10 0010
	 * @Param [m, sortMap]
	 * @return java.util.List<M>
	 **/

	
	List<M> selectAllOrderBy(M m,LinkedHashMap<String,String> sortMap);



	/**
	 * @Author feizhou
	 * @Description 返回排序列表，支持模糊查询，支持1属性多个值的查询
	 * @Date 下午 11:22 2019/10/11 0011
	 * @Param [m, sortMap, likePropertyNameList, arrayQueryMap]
	 * @return java.util.List<M>
	 **/
	
	List<M> selectAllByOtherKey(M m,Map<String,Object> likeQueryMap,Map<String,List<Object>> arrayQueryMap,LinkedHashMap<String,String> sortMap);

	/**
	 * @Author feizhou
	 * @Description 分组查询
	 * @Date 上午 12:01 2019/10/12 0012
	 * @Param [m, groupList, sortMap]
	 * @return java.util.List<M>
	 **/

	List<M> selectAllByGroup(M m, List<String> groupList,LinkedHashMap<String,String> sortMap);


	/**
	 * @Author feizhou
	 * @Description M作为过滤条件删除
	 * @Date 下午 2:09 2019/10/13 0013
	 * @Param [m]
	 * @return int
	 **/
	
	int delete(M m);
	/**
	 * @Author feizhou
	 * @Description 删除
	 * @Date 下午 2:10 2019/10/13 0013
	 * @Param [id]
	 * @return int
	 **/

	int deleteById(Object id);
	/**
	 * @Author feizhou
	 * @Description 删除
	 * @Date 下午 2:10 2019/10/13 0013
	 * @Param [ids]
	 * @return int
	 **/


	int deleteByIds(List<Object> ids);


	/**
	 * @Author feizhou
	 * @Description 通过主键更新
	 * @Date 下午 2:10 2019/10/13 0013
	 * @Param [m]
	 * @return int
	 **/
	
	int updateById(M m) ;



	int update(M m,Map<String,Object> queryMap) ;
	/**
	 * @Author feizhou
	 * @Description 插入
	 * @Date 下午 2:11 2019/10/13 0013
	 * @Param [m]
	 * @return int
	 **/
	

	int insert(M m);

	/**
	 * @Author feizhou
	 * @Description 批量插入
	 * @Date 下午 2:14 2019/10/13 0013
	 * @Param [listm]
	 * @return int
	 **/


	int batchInsert(List<M> list);


}